﻿using System.Configuration.Provider;
using NCMIS.ObjectModel;

namespace NCMIS.Provider
{
    /// <summary>
    /// Provides the base implementation for the Multi-Filing Provider for the Multi-Filing Services.
    /// </summary>
    public abstract class MultiFilingProviderBase : ProviderBase
    {
        /// <summary>
        /// Adds an existing fileable non-folder object to a folder.
        /// </summary>
        /// <param name="repositoryId">The id of the repository.</param>
        /// <param name="objectId">The id of the object to file.</param>
        /// <param name="folderId">The id of the target folder, in which the filable object will be filed.</param>
        /// <param name="allVersions">Add all versions of the object to the folder if the repository supports version-specific filing.</param>
        public abstract void AddObjectToFolder(string repositoryId, string objectId, string folderId, bool allVersions);

        /// <summary>
        /// Gets all the unfiled documents int the repository.
        /// </summary>
        /// <param name="repositoryId">The id of the repository.</param>
        /// <returns>CmisObjectList, containing all the unfiled documents in the repository, formatted as Atom 1.0 Feed.</returns>
        public abstract CmisObjectList GetUnfiled(string repositoryId);

        /// <summary>
        /// Removes an existing fileable non-folder object from a folder.
        /// </summary>
        /// <param name="repositoryId">The id of the repository.</param>
        /// <param name="objectId">The id of the object.</param>
        /// <param name="folderId">The id of the folder.</param>
        public abstract void RemoveObjectFromFolder(string repositoryId, string objectId, string folderId);
    }
}
